\clearpage \noindent\begin{tabularx}{\linewidth}{|X|}
\hline \vskip -2mm
{\sf 数据库系统原理} \hfill September 2, 2011 \\
{\centering \sf \large Lecture 2:
数据库系统\footnote{根据《数据库系统概念、设计与应用》补充} \\ }
\textsl{Lecturer: 冯中慧 \hfill Scriber: 戴唯思}\\ \hline
\end{tabularx}
\setcounter{section}{0}
\renewcommand{\thepage}{\lecture -\arabic{page}}
\def\lecture{2}

\section{数据管理各阶段的比较}

    \begin{itemize}
        \item 人工管理阶段
        \item 文件系统阶段
        \item 数据库系统阶段
    \end{itemize}

    \subsection{知名数据库产品}

        微软的有SQL Server, 此外还有开源的MySQL(先被Sun公司拥有, 然后被Oracle收购)

    \subsection{保证数据安全的方法}

        采用冗余备份, 记录log.

\section{数据库系统}

    \begin{figure}[h]\centering
        \begin{psmatrix}[rowsep=0.5]
            \psovalbox{程序员用户} \\
            \psovalbox{终端用户} & 三类用户 & \psdblframebox{数据库管理系统(DBMS)} & \psframebox{数据库(DB)} \\
            \psovalbox{数据库管理员(DBA)} \\
        \end{psmatrix}
        \ncangle[angleA=0, angleB=180]{-}{1,1}{2,2}
        \ncangle[angleA=0, angleB=180]{-}{2,1}{2,2}
        \ncangle[angleA=0, angleB=180]{-}{3,1}{2,2}
        \ncline{<->}{2,2}{2,3}
        \ncline{<->}{2,3}{2,4}
        \caption{数据库系统与用户}
        \label{fig:2:db-and-user}
    \end{figure}
   
    \subsection{数据模型与数据库模式}

        描述、组织和存放数据的方式涉及到数据模型和数据模式概念.

        \textbf{数据模型}(Data Model): 建立数据库的基础.

        \textbf{数据模式}(Data Schema): 在设计数据库的不同阶段需要建立不同的数据模式. 

        \subsubsection{数据和信息}

            数据在\textbf{语法}(Syntax)和\textbf{语义}(Semantic)两个层面上有意义, 语法指的是数据的格式规定, 语义指的是数据本身的含义.

            数据符号是对相应信息的抽象, 如: 将学号字段设计为字符串.

        采用不同的数据模型抽象描述现实世界中不同类型的事物.

        \subsubsection{数据模型}

            数据模型是规定现实世界数据特征的抽象, 是用来描述数据的语法、语义和操作的一组概念的集合, 包括\textbf{数据结构}、\textbf{数据操作}和\textbf{数据完整性}三要素.

            抽象的三个阶段:现实世界$\to$信息世界$\to$机器世界:

            \begin{figure}[h]\centering
                \begin{psmatrix}
                     \psovalbox[fillcolor=lightgray, fillstyle=solid]{现实世界}\\
                     \psframebox{信息世界概念模型, 如E-R模型} \\
                     \psframebox{机器世界数据模型}
                 \end{psmatrix}
                 \ncline{->}{1,1}{2,1}\naput{认识抽象}
                 \ncline{->}{2,1}{3,1}\naput{转换}
                 \caption{抽象数据模型}
                 \label{fig:2:abstract}
             \end{figure}

            \begin{itemize}
                \item \textbf{概念数据模型}: 面向用户和现实世界的数据模型, 与特定的DBMS无关;
                \item \textbf{逻辑数据模型}: 用户从DBMS看到的数据模型, 与DBMS相关; \\
                    经典的有三类: 
                    \begin{itemize}
                        \item 层次模型(树): 自上而下, 只表示了一对多的联系, 查询和更新复杂
                        \item 网状模型(图): 一个以上的结点无父结点, 至少有一个结点有多于一个的父结点
                        \item 关系模型(表, 主流): 逻辑结构是``二维表'', 结构简单, 容易理解. 常见数据库系统都是关系型数据库.
                    \end{itemize}
                    各种经典逻辑数据模型之间的根本区别在于数据之间联系的表示方式不同.
                \item \textbf{物理数据模型}: 反映数据存储结构的数据模型.
            \end{itemize}

            面向对象模型: 90年代出现, 但因为一些原因使用受到限制. 有类和实例的概念. 

        \subsubsection{数据模式}

            模式是数据库中全体数据的逻辑结构和特征的描述, 给出实体和属性名, 指定了它们之间的联系, 仅仅涉及类型的描述, 不涉及具体的值. 模式的一个具体值称为模式的一个实例(instance).

            模式是数据库系统模式结构的中间层, 是所有用户的公共数据视图, 属于逻辑抽象.

            型(type)是对某一类数据的结构和属性的说明, 值(value)是型的一个具体赋值.

            \textbf{主键}(primary key): 在确定元组方面存在唯一性. 可以存在多个主键.

            \begin{itemize}
                \item \textbf{外模式}, 也称子模式或用户模式, 属于视图层抽象, 是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述. 是模式的一个子集.
                \item 模式
                \item \textbf{内模式}, 也称存储模式, 属于物理层抽象, 最接近底层实现
            \end{itemize}

        \subsubsection{映射}

            三层之间转换请求和结果的过程称为\textbf{映射}. ANSI-SPARC的三层架构模型提供了两级映射:

            \begin{itemize}
                \item 概念模式/内模式映射: 物理数据独立性 \\
                    定义了概念视图和存储数据库之间的对应关系
                \item 外模式/概念模式映射: 逻辑数据独立性 \\
                    定义了特定的外部视图和概念视图之间的对应关系
            \end{itemize}

